Computer systems and other electronic systems typically use buses for interconnecting integrated circuit components so that the integrated circuit components can communicate with one another. The buses typically connect masters such as microprocessors and controllers and slaves such as memories and bus transceivers.
Each master and slave coupled to a bus typically includes output driver circuitry for driving signals onto the bus. The output driver circuitry may comprise a current mode output driver. A current mode driver draws a known current regardless of load and operating conditions and has a high output impedance.
An example of a current mode output driver for use in a master or slave device is disclosed in U.S. Pat. No. 5,254,883, issued Oct. 19, 1993, of Horowitz et al. ("Horowitz"), entitled Electrical Current Source Circuitry for a Bus. Horowitz describes a process for calibrating a register-setting for a register in a current controller of a current mode output driver. The process determines a register-setting that causes an output driver to produce a bus voltage approximately equal to a reference voltage. The process sends an initial register-setting from the master to the slave. The initial register-setting induces a voltage VOL on a particular transmission line of a current mode bus by coupling selective ones of a plurality of capacitors to the output of a current mirror of the output driver. The master measures VOL on the one transmission line one time, and compares VOL with a reference voltage Vref. If VOL is greater than Vref, the initial register-setting is updated and the process is repeated until a register-setting is achieved which results in VOL being less than or equal to Vref.
One disadvantage of Horowitz is that in determining the register-setting, errors may be introduced in the process resulting in a suboptimal register-setting. For example, Horowitz describes measuring VOL on one transmission line one time. A calibrated register-setting based on this measurement is then used to set the register-setting for each output driver in a slave. Practically, variations exist between output drivers in a slave device such that a register-setting based on the measured voltage of one transmission line may not necessarily result in the correct register-setting for another transmission line.
Additionally variations between comparison circuits in the master, variations in the reference and circuit voltages in the master and the slave, and variations in bus termination may also cause errors in the register setting process disclosed in Horowitz.
Another disadvantage of Horowitz is that for the process for determining a register-setting, errors may be introduced as a result of small time-dependent variations in the measured bus voltage VOL. Thus, VOL will not stabilize on the bus until after a certain amount of time. The time-dependent variations in VOL are due to transmission line effects caused by bus impedance variations and non-linear effects of output transistors of the slave coupled to the bus. These variations may be significant enough to adversely affect the comparison of VOL with Vref if the comparison occurs before the time-dependent variations in VOL have stabilized. Additionally, small voltage variations on the bus induced by nearby electrical components within or outside of the system may contribute to errors in the comparison of VOL with Vref, and consequently result in an erroneous determination of the register-setting.
Horowitz further describes that the register-setting is doubled in order to achieve a symmetric voltage swing about Vref. A simple doubling of the register-setting would suffice if the output transistors were ideal linear current sources; however, practical transistor devices have finite output impedance. These transistor characteristics can cause the doubled register-setting to induce a bus voltage on the bus that does not achieve symmetry about Vref with a sufficient degree of accuracy.
Another disadvantage of the process of Horowitz is that the process depends upon a fixed relationship between the register-setting, the selection of a plurality of capacitors, and the time to charge the selected capacitors. Practically, there is additional capacitance in the current controller circuitry due to parasitic capacitance of the plurality of capacitors and other stray effects as well as non-linearities at the beginning of circuit operation. These combined effects result in a register-setting having a small positive offset. Therefore, simply doubling the register-setting having the small positive offset may not result in a symmetric voltage swing about Vref.